package com.pactera.madp.cp.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pactera.madp.common.core.util.R;
import com.pactera.madp.cp.api.dto.AddCustomerQueryDTO;
import com.pactera.madp.cp.api.entity.AddCustomerEntity;
import com.pactera.madp.cp.api.vo.AddCustomerStatisticsVO;
import com.pactera.madp.cp.api.vo.AddCustomerVO;
import com.pactera.madp.cp.api.vo.DistributedCustomerVO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List;
import java.util.Set;

/**
 * (CpAddCustomer)表服务接口
 *
 * @author yushen.qi
 * @since 2022-01-11 18:17:22
 */
public interface AddCustomerService extends IService<AddCustomerEntity> {

    /**
     * 分页查询
     *
     * @param page
     * @return
     */
    Page<AddCustomerVO> getListPage(Page page);

    /**
     * 提醒客户经理添加客户
     *
     */
    void toEmployee();

    /**
     * 提醒客户经理添加客户
     * @param employeeId
     * @param id
     */
    void toEmployeeOne(String employeeId,Integer id);

    /**
     * 批量邀请客户分页查询
     * @param page
     * @param dto
     * @return 返回批量邀请客户列表(CRM同步过来的客户+EXCEL导入的客户)
     */
    IPage<AddCustomerVO> getCrmCustPage(Page page, AddCustomerQueryDTO dto);

    AddCustomerStatisticsVO getStatisticsData(List<String> orgCodes,List<String> wxUserIds,Set<Integer> employeeIds);

    /**
     * 获取批量邀请客户统计信息
     * @param deptId
     * @param wxDeptId
     * @return 返回批量邀请客户统计(按照部门统计)信息
     */
    AddCustomerStatisticsVO getStatisticsDatas(Integer deptId, Integer wxDeptId);

    IPage<AddCustomerStatisticsVO> getStatisticsPage(Page page,Integer fenHangDeptId);

    List<AddCustomerEntity> getListByWxUserId(String wxUserId);

    /**
     * 导入EXCEL
     * @param file
     * @return
     */
    R inputCrmCustData(MultipartFile file);

    /**
     * 导出EXCEL模板
     * @param response
     * @param out
     */
    void outputExcel(HttpServletResponse response, OutputStream out);

    /**
     * 根据wxUserId分页查询状态为已分配的客户
     * @param page
     * @param wxUserId
     * @param name
     * @return 返回状态为已分配的客户信息列表
     */
    IPage<DistributedCustomerVO> getDistributedCustPage(Page page, String wxUserId,String name);

}
